/*
  Printable.h - Interface class that allows printing of complex types
  Copyright (c) 2011 Adrian McEwen.  All right reserved.
  Modified by Brian T. Park 2019.

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public
  License along with this library; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

#ifndef EPOXY_DUINO_PRINTABLE_H
#define EPOXY_DUINO_PRINTABLE_H

#include <stdlib.h>

class Print;

/**
 * The Printable class provides a way for new classes to allow themselves to be
 * printed. By deriving from Printable and implementing the printTo method, it
 * will then be possible for users to print out instances of this class by
 * passing them into the usual Print::print and Print::println methods.
*/
class Printable
{
  public:
    virtual size_t printTo(Print& p) const = 0;
};

#endif

